package main

import "fmt"

/*
调整数组顺序使奇数位于偶数前面
输入一个整数数组，实现一个函数来调整该数组中数字的顺序，使得所有奇数在数组的前半部分，所有偶数在数组的后半部分。

示例：
输入：nums = [1,2,3,4]
输出：[1,3,2,4]
注：[3,1,2,4] 也是正确的答案之一。
*/

//🐷解法
//func exchange(nums []int) []int {
//	var A, B, res []int
//	for _, v := range nums {
//		if v%2 != 0 {
//			A = append(A, v)
//		} else {
//			B = append(B, v)
//		}
//	}
//	A = append(A, B...)
//	res = append(res, A...)
//	return res
//}

//双指针
func exchange(nums []int) []int {
	left, right := 0, len(nums)-1
	for left <= right {
		if nums[left]%2 == 0 { //左边搜索到偶数
			if nums[right]%2 != 0 { //右边搜索到奇数
				nums[left], nums[right] = nums[right], nums[left]
			} else {
				right--
			}
		} else {
			left++
		}
	}
	return nums
}

func main() {
	nums := []int{1, 2, 3, 4}
	fmt.Println(exchange(nums))
}
